package nutella89.basic;

import java.util.Iterator;
import java.util.Scanner;

public class J22_BookDBMain {
	
	// JDBC 서비스 클래스, 키보드 입력 클래스는
	// 객체 생성없이 바로 사용할 수 있도록
	// static 으로 선언
	private static J22_BookDBDAO srv = new J22_BookDBDAO();
	private static Scanner sc = new Scanner(System.in);
	
	private static final String TITLE = " -= BookDB 프로그램 =- ";
	private static final String MENU = " a)추가 b)전체조회 c)상세조회 d)수정 e)삭제 q)종료 ";
	private static final String ADDMSG = " 제목,출판사,저자 순으로 입력 ";
	private static final String VIEWMSG = " 상세 조회할 책 번호를 입력 ";
	private static final String UPDMSG = " 수정 할 책 번호를 입력 ";
	private static final String DELMSG = " 삭제 할 책 번호를 입력 ";
	
	public static void main(String[] args) {
		
		System.out.println(TITLE);
		while(true){
			System.out.println(MENU);
			switch(sc.next()){
				case "a" : newBookDB();
					break;
				case "b" : readBookDB();
					break;
				case "c" : readOneBookDB();
					break;
				case "d" : modifyBookDB();
					break;
				case "e" : removeBookDB();
					break;
				case "q" : sc.close();
						System.exit(0);
					break;
			}
		}

	}

	// Main 클래스에서 DAO클래스의 메서드를
	// 직접 호출하는 것은 OOP개념에 다소 위배
	// 캡슐화와 보안,유지보수 관점에서 볼 때
	// 서비스 객체를 하나 더 만들어
	// 그것을 통해 DAO클래스의 메서드를
	// 호출하는 것이 더 나음
	
	// 즉, Main -> DAO 보다는
	// Main -> service -> DAO 가 나음
	
	// DAO클래스의 메서드를 호출하는
	// 서비스 메서드를 static으로 선언
	private static void newBookDB(){
		System.out.println(ADDMSG);
		J22_BookDBVO bvo = new J22_BookDBVO(sc.next(),sc.next(),sc.next());
		if(srv.insertBookDB(bvo)>0) System.out.println("추가성공!");
	}
	private static void readBookDB(){
		Iterator<J22_BookDBVO> iter = srv.selectBookDB().iterator();
		while(iter.hasNext())
			System.out.println(iter.next());
	}
	private static void readOneBookDB(){
		System.out.println(srv.selectBookDB());
		System.out.println(VIEWMSG);
		String id = sc.next();
		System.out.println(srv.selectBookDB(id));
	}
	private static void modifyBookDB(){
		Iterator<J22_BookDBVO> iter = srv.selectBookDB().iterator();
		while(iter.hasNext())
			System.out.println(iter.next());System.out.println(UPDMSG);
		String id = sc.next();		// id 입력
		System.out.println(ADDMSG);
		J22_BookDBVO bvo = new J22_BookDBVO(sc.next(),sc.next(),sc.next());
		bvo.setId(id);
		
		if(srv.updateBookDB(bvo)>0)	System.out.println("수정완료!");
	}
	private static void removeBookDB(){
		System.out.println(srv.selectBookDB());
		System.out.println(DELMSG);
		String id = sc.next();
		if(srv.deleteBookDB(id)>0) System.out.println("삭제완료!");
	}
	
}

